<?php

namespace app\admin\controller;

use app\common\controller\AdminController;
use app\admin\model\system\Admin;
use think\facade\Env;
class Index extends AdminController
{
    public function index()
    {
      return view();
    }

    /**
     * 后台欢迎页
     * @return string
     * @throws \Exception
     */
    public function welcome()
    {
        
        return view();
    }
  /**
   * 修改管理员信息
   * @return string
   * @throws \think\db\exception\DataNotFoundException
   * @throws \think\db\exception\DbException
   * @throws \think\db\exception\ModelNotFoundException
   */
  public function editAdmin()
  {
    $id  = session('admin.id');
    $row = (new Admin())
      ->withoutField('password')
      ->find($id);
    empty($row) && $this->error('用户信息不存在');
    if ($this->request->isAjax()) {
      $post = $this->request->post();
      $this->isDemo && $this->error('演示环境下不允许修改');
      $rule = [];
      $this->validate($post, $rule);
      try {
        $save = $row
          ->allowField(['head_img', 'phone', 'remark', 'update_time'])
          ->save($post);
      } catch (\Exception $e) {
        $this->error('保存失败');
      }
      $save ? $this->success('保存成功') : $this->error('保存失败');
    }
    $this->assign('row', $row);
    return $this->fetch();
  }

  /**
   * 修改密码
   * @return string
   * @throws \think\db\exception\DataNotFoundException
   * @throws \think\db\exception\DbException
   * @throws \think\db\exception\ModelNotFoundException
   */
  public function editPassword()
  {
    $id  = session('admin.id');
    $row = (new Admin())
      ->withoutField('password')
      ->find($id);
    if (!$row) {
      $this->error('用户信息不存在');
    }
    if ($this->request->isAjax()) {
      $post = $this->request->post();
      $this->isDemo && $this->error('演示环境下不允许修改');
      $rule = [
        'password|登录密码'       => 'require',
        'password_again|确认密码' => 'require',
      ];
      $this->validate($post, $rule);
      if ($post['password'] != $post['password_again']) {
        $this->error('两次密码输入不一致');
      }

      // 判断是否为演示站点
      $example = Env::get('easyadmin.example', 0);
      $example == 1 && $this->error('演示站点不允许修改密码');

      try {
        $save = $row->save([
          'password' => password($post['password']),
        ]);
      } catch (\Exception $e) {
        $this->error('保存失败');
      }
      if ($save) {
        $this->success('保存成功');
      } else {
        $this->error('保存失败');
      }
    }
    $this->assign('row', $row);
    return $this->fetch();
  }
}
